package com.java.zhuiyun.api.live.service;

import com.java.zhuiyun.api.live.entity.Live;
import com.java.zhuiyun.common.response.CommonResult;
import com.java.zhuiyun.util.pageUtil.PageRequest;
import com.java.zhuiyun.util.pageUtil.PageResult;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartRequest;

import java.io.IOException;

@Transactional
public interface LiveService {
    /**
    * @Author MJL
    * @Description todo 查看所有直播间信息
    * @Date 2023/8/21 10:19
    * @Return  * @param null
    */
    PageResult queryLive(Live live, PageRequest pageRequest);

    /**
    * @Author MJL
    * @Description todo 将违规直播间封禁
    * @Date 2023/8/21 14:06
    * @Return  * @param null
    */
    CommonResult banned(Integer id);
    /**
    * @Author MJL
    * @Description todo 将直播间进行解封
    * @Date 2023/8/21 14:13
    * @Return  * @param null
    */
    CommonResult enable(Integer id);

    /**
    * @Author MJL
    * @Description todo 添加直播间（开启直播）
    * @Date 2023/8/23 8:54
    * @Return  * @param null
    */
    CommonResult saveLive(Live live, MultipartRequest multipartRequest , MultipartFile file) throws IOException;

    /**
    * @Author MJL
    * @Description todo 根据教师id获取直播信息
    * @Date 2023/8/23 14:37
    * @Return  * @param null
    */
    CommonResult getLiveByUserId(Integer teacherId);

    /**
    * @Author MJL
    * @Description todo 关闭直播
    * @Date 2023/8/23 15:07
    * @Return  * @param null
    */
    CommonResult closeLive(Live live);

    /**
    * @Author MJL
    * @Description todo 检验当前主播是否正在直播
    * @Date 2023/8/23 16:07
    * @Return  * @param null
    */
    CommonResult checkLiveByUserId(Integer teacherId);

    /**
    * @Author MJL
    * @Description todo 根据id查询直播间信息
    * @Date 2023/8/24 16:16
    * @Return  * @param null
    */
    CommonResult getLiveById(Integer id);

    /**
    * @Author MJL
    * @Description todo 获取正在直播的直播间信息
    * @Date 2023/8/24 19:19
    * @Return  * @param null
    */
    CommonResult listLive();
}
